//
//  ZTFileHandle.h
//  ZHYYTool
//
//  Created by MT-SW-005 on 2021/9/17.
//  Copyright © 2021 MT-SW-005. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ZTFileHandle : NSObject

/* *********************** 文件/文件夹操作 ********************************** */

/**
* 根据路径判断文件/文件夹是否存在
*
@param filePath 文件夹路径
@return BOOL   YES or NO
*/
+(BOOL)isExistFile:(NSString*)filePath;


/**
* 删除文件
*
@param filePath 文件夹路径
@return BOOL   YES or NO
*/
+(BOOL)removeFile:(NSString*)filePath;

/**
* 根据路径创建文件夹
*
@param path 需要创建的文件夹路径
@return 返回创建的文件夹路径
*/
+(NSString*)createDirectory:(NSString*)path;


/**
* 根据路径,slot,sn创建文件夹     path: /vault/logPathName/2021_11_02/    slot:1   sn:SNXXXXXXXX
 格式:filePath/slot/sn_dateStr
@return 返回创建的文件夹路径   /vault/logPathName/2021_11_02/DUT1/SNXXXXXXXX_17_14_56
*/
+(NSString*)createFileForDUT:(int)slot FilePath:(NSString*)filePath SN:(NSString*)sn;


/**
* 根据路径和文件名创建文件
*
@param path 需要创建的文件路径
@param fileName 需要创建的文件名字
@return 返回创建的文件名
*/
+(NSString*)createFileWithPath:(NSString*)path FileName:(NSString*)fileName;



/**
* 根据文件名创建文件
*
@param fileName 需要创建的文件名字
@return 返回创建的文件名
*/
+(NSString*)createFile:(NSString*)fileName;


/* *********************** 文件加载 ************************************* */


/**
*加载plist文件
*/
+ (id)readPlistFile:(NSString *)filePath;


/**
*加载json文件
*/
+ (id)readJsonFile:(NSString *)filePath;


/* *********************** 文件读写操作 ********************************** */


/**
* 追加的方法写入字符串数据到文件
*
@param path 写入数据的文件路径
*/
+(void)writeString:(NSString*)str toFilePAth:(NSString *)path;


/**
* 写入log文件
*
@param str 写入到数据
@param logFile 文件名
*/
+(void)writeStringLog:(NSString*)str toLogFile:(NSString*)logFile;


/**
* 写入csv表头
*
@param header CSV表头数据 格式 header,header,header...header
@param CSVFile csv文件
*/
+(void)writeCSVHeader:(NSString*)header toCSVFile:(NSString*)CSVFile;


/**
* 写入csv数据
*
@param csvItem 写入的CSV数据 格式 item,item,item...item
@param CSVFile csv文件
*/
+(void)writeCSVItem:(NSString*)csvItem toCSVFile:(NSString*)CSVFile;


/**
* 写入log 同时在控制台打印
*
@param logStr 写入到log
@param logFile 日志文件
*/
+(void)saveAndPrintLog:(NSString*)logStr LogFile:(NSString*)logFile;


/**
* 从文件中读取数据
*
@param file 读取的文件
@return 返回读取的数据
*/
+(NSData*)readDataFromFile:(NSString*)file;


/**
* 获取文件数据长度
*
@param file 读取的文件
@return 返回读取的数据长度
*/
+(NSUInteger)fileDataLength:(NSString*)file;


/**
* 重定向NSLog输出到指定文件中
*
@param path 保存的文件夹
@param name 保存的文件名
*/
+ (void)redirectNSlogToFolder:(NSString*)path logName:(NSString*)name;

@end

NS_ASSUME_NONNULL_END
